package com.zxy.ziems.server.alarm.controller;

import com.zxy.btp.common.response.PageResult;
import com.zxy.ziems.server.alarm.pojo.dto.AlarmTypeDTO;
import com.zxy.ziems.server.alarm.pojo.param.AlarmTypePageParam;
import com.zxy.ziems.server.alarm.pojo.vo.AlarmTypeOptionVO;
import com.zxy.ziems.server.alarm.pojo.vo.AlarmTypeVO;
import com.zxy.ziems.server.alarm.service.AlarmTypeService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * 采集管理-告警类型管理
 *
 * @author chdzq
 * @create 2023/3/28
 */
@RestController
@Validated
@RequestMapping("/api")
public class AlarmTypeController {
    /**
     * 新增告警类型
     *
     * @param dto 用户post参数
     * @return
     */
    @PostMapping("/alarm/type/add")
    public void add(@Validated(value = AlarmTypeDTO.Add.class) @RequestBody AlarmTypeDTO dto) throws Exception {
        service.add(dto);
    }

    /**
     * 更新告警类型
     *
     * @param dto 用户post参数
     * @return
     */
    @PostMapping("/alarm/type/update")
    public void update(@Validated(value = AlarmTypeDTO.Update.class) @RequestBody AlarmTypeDTO dto) throws Exception {
        service.update(dto);
    }

    /**
     * 删除告警类型
     *
     * @param dto 用户post参数
     * @return
     */
    @PostMapping("/alarm/type/delete")
    public void delete(@Validated(value = AlarmTypeDTO.Select.class) @RequestBody AlarmTypeDTO dto) throws Exception {
        service.deleteById(dto.getId());
    }

    /**
     * 查询告警类型信息
     *
     * @param dto 用户post参数
     * @return
     */
    @GetMapping("/alarm/type/detail")
    public AlarmTypeVO detail(@Validated(value = AlarmTypeDTO.Select.class) AlarmTypeDTO dto) throws Exception {
        return service.detailById(dto.getId());
    }

    /**
     * 分页查询告警类型
     *
     * @return
     */
    @GetMapping("/alarm/type/page")
    public PageResult<AlarmTypeVO> page(@Validated AlarmTypePageParam param) throws Exception {
        return service.pageListBy(param);
    }

    /**
     * 查询全部告警类型
     *
     * @return
     */
    @GetMapping("/alarm/type/list")
    public List<AlarmTypeVO> list() throws Exception {
        return service.viewList();
    }

    /**
     * 查询全部告警类型(下拉)
     *
     * @return
     */
    @GetMapping("/alarm/type/listOption")
    public List<AlarmTypeOptionVO> listOption() {
        return service.viewOptionList();
    }


    private AlarmTypeService service;

    @Autowired
    public void setService(AlarmTypeService alarmTypeService) {
        this.service = alarmTypeService;
    }
}
